# import pymysql
#
# # 建立数据连接
# db = pymysql.connect(
#     user='test',  # 用户名
#     password='test123',  # 密码
#     host='192.168.0.125',  # 数据库ip
#     port=3306,  # 数据库端口
#     database="wwt106_info",  # 数据库名称
#     charset='utf8mb4')  # 字符编码
#
# # 建立游标 (游标的作用：执行SQL语句，获取查询结果)
# cs = db.cursor()
#
# # 1、准备好SQL语句
# text = 'select * from question;'
# # 2、通过 游标 执行SQL
# cs.execute(text)
# # 3、获取查询的结果
# data = cs.fetchall()  # 以元组方式返回查询结果 ， ((第一条数据),(第二条数据)  )
# for i in data:
#     print(i)
# # 4、对数据进行了 增删改 需要 commit 提交 或者 rollback 撤销、回滚
# db.commit()
# # 关闭连接
# db.close()

# openpyxl  读写excel文件
# 导入模块
# import openpyxl
#
# # 打开 excel 文件
# file = openpyxl.load_workbook('python.xlsx')
# # excel 文件具体读取的表格  通过下标来读取
# data = file.worksheets[0]
# # 读取内容
# for i in data.values:
#     print(i)
# 增加一行
# data.append(['形', '神', '不', '随', '尘', '世', '改'])
# 修改数据
# data['A3'] = '日'
# # 保存文件
# file.save('python.xlsx')

# 变量 存数据
# 函数 存代码
# 类 存函数，存变量  相同属性或者操作的放在同一个类中
# class 类名称():
#        类存储的东西
# class calc:
#     #  在类中创建的函数叫做方法
#     # 方法中第一个参数必须是self
#     # 调用函数时self不传参（当不存在）
#     def add(self, a, b):
#         print(a + b)


# 类的调用
# t1 = calc()  # 先调用类
# t1.add(a=12, b=33)  # 再调用类中的方法

# 继承 拥有父类的所有东西
# class vip(calc):
#     # 对继承过来的方法可以重写，重写不会影响父类
#     def add(self, a, b):
#         print(a * b)
# x1 = vip()
# x1.add(a=7, b=9)

# class yang:
#     def x(self):
# 在方法中定义的变量，如果想要给其他方法使用
# 那么在定义变量时，在变量名前面 + self.
#         self.name = '李白'
#         print(self.name)
#     def y(self):
#         print(self.name)
# a1 = yang()
# a1.x()
# a1.x
# a1.y()

# class demo:
#     def __init__(self, name, age):
#         '''初始化方法，这个方法不需要调用，类被实例化时自动调用'''
#         # 使用 __init__方法，可以使类接收参数
#         # 参数在调用类的时候传递
#         self.name = name
#         self.age = age
#         print('这是__init__方法')
#
#     def __del__(self):
#         '''自动执行的，当实例化对象被销毁的时候'''
#         print('目标已清除')
#
#     def yy(self):
#         print(f'输入的是{self.name}和{self.age}')
# demo(name='张三', age=22)

# class tools:
#     count = 0
#     def __init__(self,name):
#         self.name = name
#         print(f'我有两把刀一把叫瞬另一把叫{self.name}')
#         tools.count += 1
# x1 = tools(name='剪刀')
# x2 = tools(name='锤子')
# print(tools.count)

# 多态
# # 不同的 子类 调用相同的父类，产生不同的结果
# class dog():
#
#     def __init__(self,name):
#         self.name = name
#
#     def game(self):
#         print('普通的狗，只能简单的玩')
#
# class GodDog(dog):
#     def game(self):
#         print('神狗要去天上玩...')
#
# class person():
#     def __init__(self,name):
#         self.name = name
#
#     def game_with_dog(self,which_dog):
#         print(f'{self.name}和{which_dog.name}一起玩')
#         which_dog.game() #
#
# wangcai = dog(name='旺财')
# xtq = GodDog(name='哮天犬')
# xiaoming = person('小明')
# xiaoming.game_with_dog(which_dog=wangcai)

# woman():
#
#     def __init__(self,name):
#         self.name = name
#         # 私有属性、变量
#         # self.__变量名
#         self.__age = 18
#
#     def __myage(self):
#         print(f'我的年龄是{self.__age}')
#
# t1 = woman(name='张三')

# a = ['烤鸭', '手撕鸡', '鸡腿', '胡萝卜烧鸡']
# x = input('想找哪个就说，老哥给你安排的妥妥的：')
# try:
#     x = int(x)
#     print(f'你是不是要找第{x}个？是{a[x]}吧')
# except ValueError as e:
#     print('有病嗷？谁让你乱输的，输整数知道不')
# except IndexError as e:
#     print('一天天的没完了嗷？没这么多知道不，重整')

# open('文件名称','模式',encoding='utf-8')
# w 写  , 文件不存在则新建、文件存在则覆盖
# f = open('a.txt','w',encoding='utf-8')
# f.write('醉后不知天在水\n')
# f.write('满船清梦压星河')
# f.close()
# a  , 文件不存在则新建、文件存在则追加
# f = open('a.txt','a',encoding='utf-8')
# f.write('\n形神不随尘世改\n')
# f.write('日月青冥纷纷化入剑中来')
# f.close()
# r 读
f = open('a.txt','r',encoding='utf-8')
# 读取全部行数 以列表为单位
data = f.readlines()
for i in range(3):
    print(data[i])
# 从光标所在处，读取到最后
data =f.read()
print(data)
print('——'*20)
data2 = f.read()
print(data2)
print('*'*20)
f.close()
